package model;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import database.MochilerosSQLiteHelper;

public class LugarDAO {
	Activity activity = null;
	
	public LugarDAO(Activity activity) {
		this.activity = activity;
	}
	
	public void insert(Lugar lugar){
		Integer idLugar = calcularId();
		String nombre = lugar.getNombre();
		Double latitud = lugar.getLatitud(); 
		Double longitud = lugar.getLongitud(); 
		String imagen = lugar.getImagen();
		Integer idCategoria = lugar.getIdCategoria();
		
		MochilerosSQLiteHelper mochilerosDBH = new MochilerosSQLiteHelper(activity, "DBMochileros", null, 3);
    	SQLiteDatabase db = mochilerosDBH.getWritableDatabase();
    	
		if (db != null) {
			db.execSQL("INSERT INTO Lugar (id_lugar, nombre, lat, long, imagen, id_categoria)"
					+ " VALUES ("
					+ idLugar
					+ ","
					+ "'"
					+ nombre
					+ "'"
					+ ","
					+ latitud
					+ ","
					+ longitud
					+ ", "
					+ "'"
					+ imagen
					+ "', "
					+ idCategoria
					+ ")");
			db.close();
		}
	}
	
	public Integer calcularId(){
		MochilerosSQLiteHelper mochilerosDBH = new MochilerosSQLiteHelper(activity, "DBMochileros", null, 3);
    	SQLiteDatabase db = mochilerosDBH.getWritableDatabase();
		Cursor c = db.rawQuery("SELECT max(id_lugar) FROM Lugar", null);
		if (c.moveToFirst()) {
			return c.getInt(0)+1;
		}
		db.close();
		return null;
	}
	
	public List<Lugar> buscarPorExample(Lugar lugarExample){
		MochilerosSQLiteHelper mochilerosDBH = new MochilerosSQLiteHelper(activity, "DBMochileros", null, 3);
    	SQLiteDatabase db = mochilerosDBH.getWritableDatabase();
    	Cursor c = null;
    	if(lugarExample != null && lugarExample.getIdLugar() != null && lugarExample.getNombre() == null){
    		c = db.rawQuery("SELECT * FROM Lugar WHERE id_lugar="+lugarExample.getIdLugar(), null);
    	}
    	else if(lugarExample != null && lugarExample.getIdLugar() == null && lugarExample.getNombre() != null){
    		c = db.rawQuery("SELECT * FROM Lugar WHERE nombre='"+lugarExample.getNombre()+"'", null);
    	}
    	else if(lugarExample != null && lugarExample.getIdLugar() != null && lugarExample.getNombre() != null){
    		c = db.rawQuery("SELECT * FROM Lugar WHERE id_lugar="+lugarExample.getIdLugar()+" AND nombre='"+lugarExample.getNombre()+"'", null);
    	}
    	else if(lugarExample ==null){
    		c = db.rawQuery("SELECT * FROM Lugar ORDER BY id_lugar DESC", null);
    	}
    	else if(lugarExample.getIdCategoria() != null && lugarExample.getNombre()==null && lugarExample.getIdLugar() == null){
    		c = db.rawQuery("SELECT * FROM Lugar WHERE id_categoria = "+lugarExample.getIdCategoria()+" ORDER BY id_lugar DESC", null);
    	}

		if (c != null) {
			List<Lugar> listaLugares = new ArrayList<Lugar>();
			if (c.moveToFirst()) {
				do {
					Lugar lugar = new Lugar();
					lugar.setIdLugar(c.getInt(0));
					lugar.setNombre(c.getString(1));
					lugar.setLatitud(c.getDouble(2));
					lugar.setLongitud(c.getDouble(3));
					lugar.setImagen(c.getString(4));
					lugar.setIdCategoria(c.getInt(5));
					listaLugares.add(lugar);
					lugar = new Lugar();
				} while (c.moveToNext());
			}
			if (!listaLugares.isEmpty()) {
				db.close();
				return listaLugares;
			}
		}
		db.close();
		return null;
	}
}
